package me.midday.java.base.knowledge.loadclass;

/**
 * 类初始化的时机有六种
 * 1. 创建类的实例，包括使用new关键字和反射和反序列化来创建实例
 * 2. 调用类的静态方法
 * 3. 访问类或接口的类变量，或为该类变量赋值
 * 4. 使用反射强制创建某个接口或类的java.lang.Class 对象： Class.forName("person")
 * 5. 初始化某个类的子类
 * 6. java.exe运行某个主类
 *
 * 下面的例子是特殊情况，当类变量使用final修饰且在编译时就能确定时将不会初始化
 */

class MyTest{
    static {
        System.out.println("静态初始化块.....");
    }
//    static final String compileConstant = System.currentTimeMillis() + " ";
    static final String compileConstant = "hello world";

}


public class CompileConstantTest {
    public static void main(String[] args){
        System.out.println(MyTest.compileConstant);
    }
}
